home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
t_os
/
gpen32k
/
source.exe
/
SRC
/
GPENSUB.C
< prev
next >
Wrap
Text File
|
1993-07-20
|
3KB
|
154 lines
/*
Gpen共通関数
別ヘッダ必要版
*/
void umosv( int x1, int y1, int x2, int y2 )
{
mosv( x1*bi, y1*bi, (x2+1)*bi-1, (y2+1)*bi-1);
}
void biboxbf( int x1, int y1, int x2, int y2, int c, int h, int h2 )
{
uboxf( x1*bi-h-1, y1*bi-h2-1, (x2+1)*bi+h, (y2+1)*bi+h, 15, 8, 7 );
uboxf( x1*bi-1, y1*bi-1, (x2+1)*bi, (y2+1)*bi, 8, 15, c );
}
void wget( void )
{
egbget( NX1, NY1, NX2, NY2, wb );
}
void wput( void )
{
egbput( NX1, NY1, NX2, NY2, wb );
egbputZ( WX1, WY1, WX2, WY2, NX4, NY4, wb );
}
void wkk( void )
{
egbget( NX1, NY1, NX2, NY2, wb );
egbputZ( WX1, WY1, WX2, WY2, NX4, NY4, wb );
}
void wkugiri( int t )
{
static int g=0;
char a[1024];
int i;
if ( t == 2 )
g = 0;
if ( t == 3 )
g = 1;
if ( t & g )
{
line(WX1*bi, (WY1+KS)*bi, (WX2+1)*bi-1, (WY1+KS)*bi, 8 );
for (i=1; i<NX4; i++)
{
line((WX1+KS*i)*bi, WY1*bi, (WX1+KS*i)*bi, (WY2+1)*bi-1, 8 );
line((WX1+KS*i)*bi, (WY1+KS)*bi, (WX1+KS*i)*bi, (WY1+KS)*bi, 15 );
}
egbget( WX1*bi, (WY1+KS)*bi, (WX2+1)*bi-1, (WY1+KS)*bi, a );
for (i=2; i<NY4; i++)
{
egbput(WX1*bi, (WY1+KS*i)*bi, (WX2+1)*bi-1, (WY1+KS*i)*bi, a);
}
} else {
boxf( WX1*bi, WY1*bi, (WX2+1)*bi-1, (WY2+1)*bi-1, 0 );
}
}
int page( int c )
{
static int v = 0;
char t[12];
egbget( BX1,BY1, BX2,BY2, vp);
v += c;
while (v < 0)
v += vz + 1;
while ( v > vz )
v -= vz + 1;
vp = vp0 + v * BX4 * BY4 * 2;
egbput( BX1,BY1, BX2,BY2, vp);
wpg(0);
boxf( PAX1+1, PAY1+1, PAX2-1, PAY2-1, 8 );
_itoa( v+1, t, 10 );
symbol( PAX2-4-strlen(t)*8, PAY2-1, t, 16, 15 );
wpg(1);
return (v);
}
void pbtn( int mb )
{
int x, y, bt = 10;
unsigned int t1, t2;
t1 = MOS_getTime();
while (mb)
{
if (mb & 1)
{
page(1);
} else {
page(-1);
}
do
{
t2 = MOS_getTime();
MOS_rdpos(&mb,&x,&y);
} while (t2-t1<bt && mb!=0);
t1 = t2;
if (bt>1)
bt--;
}
}
void bfgs( int mc )
{
char t[12];
int p, x, y;
p = EGB_getWritePage( 0, 0 );
if (mc==1)
{
ix*=2;
if (ix>=256/bi)
ix = 1;
iy*=2;
if (iy>=256/bi)
iy = 1;
} else {
if (ix==1)
ix+=256/bi;
if (iy==1)
iy+=256/bi;
ix/=2;
iy/=2;
}
wpg(0);
boxf( HX1+1, HY1+1, HX2-1, HY2-1, 0 );
_itoa( ix, t, 10 );
symbol( HX2-4-strlen(t)*8, HY2-1, t, 16, 15 );
wpg(p);
mbout( &p, &x, &y );
}
void mbclp( void )
{
MOS_getBtnXchg( &bc );
boxf( PCX1, PCY1, PCX2, PCY2, mcl[0] );
boxf( PLX1, PLY1, PLX2, PLY2, mcl[1+bc] );
boxf( PRX1, PRY1, PRX2, PRY2, mcl[2-bc] );
wpg(0);
boxf( PCX1*bi+2, PCY1*bi-5, PCX1*bi+12, PCY1*bi-3, (mcl[0]>>15)*0xff );
boxf( PLX1*bi+2, PLY1*bi-5, PLX1*bi+12, PLY1*bi-3, (mcl[1+bc]>>15)*0xff );
boxf( PRX1*bi+2, PRY1*bi-5, PRX1*bi+12, PRY1*bi-3, (mcl[2-bc]>>15)*0xff );
wpg(1);
}
void tclc(int mb, int mx, int my)
{
char t[4];
egbget( mx/bi, my/bi, mx/bi, my/bi, t );
mcl[mb] = WORD(t) & CF;
mbclp();
}